package com.eedi.framework.config.service;


import com.eedi.framework.common.config.CfgConstant;
import com.eedi.framework.common.config.ConfigMap;

import javax.validation.constraints.NotNull;
import java.util.Map;

/**
 * 新配置管理器
 *
 * @author zybourn
 * @version V1.0
 * @since 2024-03-14 12:56
 */
public interface SysConfigValueService {

    /**
     * 根据业务id和code获取值
     * 业务id大部分情况是租户id
     */
   <T> T get(@NotNull CfgConstant<T> cfgConstant, @NotNull String bizKey);

    /**
     * 批量获取
     * @param bizKey
     * @param cfgConstants
     * @return
     */
    ConfigMap getList(@NotNull String bizKey, @NotNull CfgConstant<?>... cfgConstants);

    /**
     * 批量更新
     * @param bizKey
     * @param cfgMap
     */
    void batchUpdate(@NotNull String bizKey, @NotNull ConfigMap cfgMap);


    void addValue(@NotNull CfgConstant cfgConstant, @NotNull String bizKey, String value);


    void updateValue(@NotNull CfgConstant cfgConstant, @NotNull String bizKey, String value);


    void deleteValue(@NotNull CfgConstant cfgConstant, @NotNull String bizKey);


    /**
     * 批量删除
     * @param cfgConstants
     * @return
     */
    void batchDel(@NotNull String bizKey, @NotNull CfgConstant<?>... cfgConstants);

 /**
  * 返回给前端，key值把cfgCode做了驼峰处理
  *
  * @param bizKey
  * @param cfgConstants
  * @return
  */
 Map<String,Object> getConfigMap(@NotNull String bizKey, @NotNull CfgConstant<?>... cfgConstants);

}
